echo 输出感叹号(含有变量)问题 |
您所在的位置:网站首页 › shell 叹号 搜索 › echo 输出感叹号(含有变量)问题 |
echo 输出感叹号(含有变量)问题 [vonzhou@localhost kernel]$ name=voznhou [vonzhou@localhost ~]$ myname="$name is me!"bash: !": event not found 因为 !” 会被当作命令行历史替换的符号来处理。不过在shell脚本中没有这样的问题。 不幸的是,你无法使用转义符来转义!: [vonzhou@localhost ~]$ myname="$name is me\!"[vonzhou@localhost ~]$ ]echo $myname voznhou is me\! 解决方案之一,使用单引号,即 [vonzhou@localhost ~]$ myname='$name is me!' [vonzhou@localhost ~]$ echo $myname $name is me! (这时候虽然可以显示感叹号,但是内部变量$name却失去了原有的内容) 解决方案二,必须使用双引号,可以通过 set +H 来取消命令行历史替换。 [vonzhou@localhost ~]$ set +H [vonzhou@localhost ~]$ myname="$name is me\!" [vonzhou@localhost ~]$ echo $myname voznhou is me\! (---无需转义) [vonzhou@localhost ~]$ myname="$name is me!" [vonzhou@localhost ~]$ echo $myname voznhou is me! (----OK !) 解决方案三,不要将叹号放入“ ”中 [vonzhou@localhost ~]$ name=vonzhou [vonzhou@localhost ~]$ myname="$name is me!" bash: !": event not found [vonzhou@localhost ~]$ myname="$name is me"!! (---发现只能是一个感叹号,原因暂时不明) myname="$name is me"name=vonzhou [vonzhou@localhost ~]$ myname="$name is me"! (OK 了) [vonzhou@localhost ~]$ echo $myname vonzhou is me! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |